package kyssion.leetcode.num1_50;

import kyssion.leetcode.util.ListNode;

/**
 * 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
 * <p>
 * 你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 * <p>
 * <p>
 * <p>
 * 示例:
 * <p>
 * 给定 1->2->3->4, 你应该返回 2->1->4->3.
 */
public class code24_两两交换链表中的节点 {
    public static void main(String[] args) {
        ListNode listNode = ListNode.createListNode(new int[]{
                1,2
        });
        ListNode node = new code24_两两交换链表中的节点().swapPairs(listNode);
        ListNode.showListNode(node);
    }


    public ListNode swapPairs(ListNode i) {
        ListNode head = new ListNode(-1);
        head.next = i;
        ListNode nowNode = head;
        while (nowNode != null && nowNode.next != null && nowNode.next.next != null) {
            ListNode next = nowNode.next;
            nowNode.next = nowNode.next.next;
            next.next = nowNode.next.next;
            nowNode.next.next = next;
            nowNode= nowNode.next.next;
        }
        return head.next;
    }
}
